#ifndef GLOBALVARIABLES_H_INCLUDED
#define GLOBALVARIABLES_H_INCLUDED

#include "Atomic.h"

namespace CEngine
{

namespace GlobalVariables {
    enum VariableType{
        BOOL,           ///Variable can be true or false.
        STRING,         ///Variable is a string. ex: "This is text."
        FLOAT,          ///Variable is a 64-bit floating point number.
        N64,            ///Variable is a 64-bit signed number (-9,223,372,036,854,775,808 - 9,223,372,036,854,775,807).
        N64U,           ///Variable is a 64-bit unsigned number (0 - 18,446,744,073,709,551,615).
        N32,            ///Variable is a 32-bit signed number (-2,147,483,648 - 2,147,483,647).
        N32U,           ///Variable is a 32-bit unsigned number (0 - 4,294,967,295).
        N16,            ///Variable is a 16-bit signed number (-32,768 - 32,767).
        N16U,           ///Variable is a 16-bit unsigned number (0 - 65,535).
        N8,             ///Variable is a 8-bit signed number (-128 - 127).
        N8U             ///Variable is a 8-bit unsigned number (0 - 256).
    };

    void
    createVariable(CHAR* variableName, VariableType, bool defaultValue);///done

    void
    createVariable(CHAR* variableName, VariableType, CHAR* defaultValue);///done

    void
    createVariable(CHAR* variableName, VariableType, F32 defaultValue);

    void
    createVariable(CHAR* variableName, VariableType, D64 defaultValue);

    void
    createVariable(CHAR* variableName, VariableType, I64 defaultValue);///done

    void
    createVariable(CHAR* variableName, VariableType, U64 defaultValue);///done

    void
    get(CHAR* variableName, bool& output);///done

    void
    get(CHAR* variableName, CHAR*& output);///done

    void
    get(CHAR* variableName, F32& output);

    void
    get(CHAR* variableName, D64& output);

    void
    get(CHAR* variableName, I64& output);

    void
    get(CHAR* variableName, U64& output);

    void
    set(CHAR* variableName, bool input);///done

    void
    set(CHAR* variableName, CHAR* input);///done

    void
    set(CHAR* variableName, F32 input);

    void
    set(CHAR* variableName, D64 input);

    void
    set(CHAR* variableName, I64 input);

    void
    set(CHAR* variableName, U64 input);
}

}

#endif // GLOBALVARIABLES_H_INCLUDED
